﻿// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动！任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任！

using Admin.NET.Core.Service;
using Furion.Logging;
using Microsoft.AspNetCore.SignalR;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types;

namespace Admin.NET.Application.OpenApi;
[ApiDescriptionSettings("开放接口", Name = "WeatherForecast", Order = 01)]
//[Authorize(AuthenticationSchemes = SignatureAuthenticationDefaults.AuthenticationScheme)]
public class WeatherForecastController : IDynamicApiController
{

    private readonly SysCacheService _sysCacheService;
    private readonly IUserIdProvider userIdProvider;
    private readonly SysMessageService sysMessageService;
    private static readonly string[] Summaries = new[]
     {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };
    private readonly UserManager _userManager;
    private readonly SqlSugarRepository<WeatherForecast> _approvalFlowRep;
    public WeatherForecastController(SqlSugarRepository<WeatherForecast> _approvalFlowRep,UserManager userManager
        , SysCacheService sysCacheService,
        IUserIdProvider userIdProvider,
        SysMessageService sysMessageService)
    {
        this._approvalFlowRep=_approvalFlowRep;
        _userManager = userManager;
        _sysCacheService=sysCacheService;
        this.userIdProvider = userIdProvider;   
        this.sysMessageService = sysMessageService;
    }

    [HttpGet("GetWeatherForecast")]
    public async Task<IEnumerable<WeatherForecast>> Get()
    {
        
        var list = Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
           
            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)).ToDateTime(TimeOnly.MinValue),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        }) 
        .ToArray();
        this._approvalFlowRep.InsertRange(list);
        var value = _sysCacheService.Get<IEnumerable<WeatherForecast>>($"weatherfore{_userManager.Account}");
        if (value==null)
        { 
            _sysCacheService.Set($"weatherfore{_userManager.Account}", list);
            return value;
        }
       await sysMessageService.SendAllUser(new MessageInput() { UserId= _userManager .UserId,Message="abc"});
        return this._approvalFlowRep.AsQueryable().ToList();
        return await Task.FromResult(list);
 
    }
}

[SugarTable(null, "审批流程信息表")]
public class WeatherForecast
{
    [SugarColumn(ColumnName = "Id", ColumnDescription = "主键Id", IsPrimaryKey = true, IsIdentity = true)]
    public int Id { get; set;} 
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);

    public string? Summary { get; set; }
}
